package com.upbos.upm.org;

import com.upbos.data.core.Pagination;
import com.upbos.data.core.SingleDao;
import com.upbos.upm.entity.Org;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;

/**
 * <b>Application name：</b> OrgDao.java <br>
 * <b>Application describing：组织机构管理Dao </b> <br>
 * <b>Copyright：</b> Copyright &copy; 2019 upbos.com 版权所有。<br>
 * <b>Company：</b> upbos.com <br>
 * <b>@Date：</b> 2019年11月08日 13:59 <br>
 * <b>@author：</b> <a href="mailto:Jason@miyzh.com"> Jason </a> <br>
 * <b>@version：</b>V5.0.0 <br>
 */
@Repository
public class OrgDao {

    /**
     * orm 操作类
     */
    @Resource
    private SingleDao singleDao;


    public List<Org> listOrg(String orgName, String orgId) {
        Org org = new Org();
        org.setName(orgName);
        org.setId(orgId);
        return singleDao.queryList("OrgDaoMapper.listOrg", org);
    }

    /**
     * 根据组织机构名称模糊查询
     *
     * @param name 组织机构名称
     * @return 组织机构列表
     */
    public Pagination<Org> listOrgByName(Integer pageNo, Integer pageSize, String type, String name) {
        Org org = new Org();
        org.setType(type);
        org.setName(name);
        return singleDao.queryPaginationWithTotal(pageNo, pageSize, "OrgDaoMapper.listOrgByName", org);
    }

    /**
     * 插入组织机构
     *
     * @param org 组织机构
     */
    public void insertOrg(Org org) {
        singleDao.insert(org);
    }

    /**
     * 更新组织机构
     *
     * @param org 组织机构
     */
    public void updateOrg(Org org) {
        singleDao.updateById(org);
    }


    public void deleteOrg(Org org) {
        singleDao.deleteById(org);
    }

    public int getOrgDeptCount(String orgId) {
        return singleDao.queryOne("OrgDaoMapper.getOrgDeptCount", orgId);
    }

    public int getOrgRoleCount(String orgId) {
        return singleDao.queryOne("OrgDaoMapper.getOrgRoleCount", orgId);
    }

    public int getOrgUserCount(String orgId) {
        return singleDao.queryOne("OrgDaoMapper.getOrgUserCount", orgId);
    }
}
